package logic;

import dao.TarifaDAO;
import dto.EspecialidadDTO;
import dto.ObraSocialDTO;
import dto.TarifaDTO;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author lucifer
 */
public class Tarifa {

  private int id;
  private int idObraSocial;
  private int idEspecialidad;
  private double precio;

  public Tarifa(int id, int idObraSocial, int idEspecialidad, double precio) {
    this.id = id;
    this.idObraSocial = idObraSocial;
    this.idEspecialidad = idEspecialidad;
    this.precio = precio;
  }

  public Tarifa(TarifaDTO dto) {
    this.id = dto.getId();
    this.idObraSocial = dto.getIdObraSocial();
    this.idEspecialidad = dto.getIdEspecialidad();
    this.precio = dto.getPrecio();
  }

  public static void CreateTarifasForObraSocial(int idObraSocial) throws SQLException {
    ArrayList<EspecialidadDTO> especialidades = Especialidad.All();
    for (EspecialidadDTO e : especialidades) {
      TarifaDTO dto = new TarifaDTO(-1, idObraSocial, e.getId(), 0.0);
      TarifaDAO dao = TarifaDAO.createDAO();
      dao.Save(dto);
    }
  }

  public static void CreateTarifasForEspecialidad(int idEspecialidad) throws SQLException {
    ArrayList<ObraSocialDTO> obrasSociales = ObraSocial.All();
    for (ObraSocialDTO o : obrasSociales) {
      TarifaDTO dto = new TarifaDTO(-1, o.getId(), idEspecialidad, 0.0);
      TarifaDAO dao = TarifaDAO.createDAO();
      dao.Save(dto);
    }
  }

  public static TarifaDTO SearchByID(int id) throws SQLException {
    TarifaDAO dao = TarifaDAO.createDAO();
    return dao.TarifaDTO(id);
  }

  public static TarifaDTO SearchByObraSocialEspecialidad(int idObraSocial, int idEspecialidad) throws SQLException {
    TarifaDAO dao = TarifaDAO.createDAO();
    return dao.SearchByObraSocialIDEspecialidadID(idObraSocial, idEspecialidad);
  }

  public static ArrayList<TarifaDTO> SearchByObraSocial(int idObraSocial) throws SQLException {
    TarifaDAO dao = TarifaDAO.createDAO();
    return dao.SearchByObraSocialID(idObraSocial);
  }

  public static ArrayList<TarifaDTO> SearchByEspecialidad(int idEspecialidad) throws SQLException {
    TarifaDAO dao = TarifaDAO.createDAO();
    return dao.SearchByEspecialidadID(idEspecialidad);
  }

  public void EditPrecio(double precio) throws SQLException {
    TarifaDAO dao = TarifaDAO.createDAO();
    dao.EditDouble(id, "precio", precio);
  }

  public int getId() {
    return id;
  }

  public int getIdObraSocial() {
    return idObraSocial;
  }

  public int getIdEspecialidad() {
    return idEspecialidad;
  }

  public double getPrecio() {
    return precio;
  }

}
